public abstract class Term {
    enum Kind { VARIABLE, COMPOUND };
    Kind kind;
    public abstract Term deref();
    public boolean contains(Term t) { return false; }
    
    public abstract char coerceToChar() throws ClassCastException;
    public abstract String coerceToString() throws ClassCastException;
}
